package ServeurPPE.serveur;

import java.net.*;
import java.util.NoSuchElementException;
import java.util.Scanner;
import java.io.*;

public class Authentification implements Runnable{
	
	// Déclaration des variables
	private Socket socket;
    private PrintWriter out = null;
    private BufferedReader in = null;
    private String login = "user", pass =  null;
    public boolean authentifier = false;
    public Thread t2;
     
    // Constructeur
    public Authentification(Socket s){
         socket = s;
        }
    
    // Fonction d'exécution
    public void run() {
     
        try {
            
        	// Récupération de la saisie entrante du client
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new PrintWriter(socket.getOutputStream());
             
            while(!authentifier){
            
        	// Étapes d'authentification
            out.println("Entrez votre login :");
            out.flush();
            login = in.readLine();
             
            out.println("Entrez votre mot de passe :");
            out.flush();
            pass = in.readLine();
            	
            	// On vérifie si les login et password rentrés sont corrects
	            if(isValid(login, pass)){
	                 
	                out.println("connecte");
	                System.out.println(login +" vient de se connecter ");
	                out.flush();
	                authentifier = true;   
	            }
	            else {out.println("erreur"); out.flush();
            }
         }
            // On lance l'application de chat
            t2 = new Thread(new Chat_ClientServeur(socket,login));
            t2.start();
             
        } catch (IOException e) {
             
            System.err.println(login+" ne répond pas !");
        }
    }
    
    // Fonction qui vérifie si le login et le password corresponde à la liste
    private static boolean isValid(String login, String pass) {
          
        boolean connexion = false;
        try {
        	// On prend pour base une série de login et password dans le fichier "user.txt"
            Scanner sc = new Scanner(new File("user.txt"));    
            // Parcours du fichier jusqu'à ce qu'on ait une égalité
            while(sc.hasNext()){
                if(sc.nextLine().equals(login+" "+pass)){
                  connexion=true;
                  break;
                }
             }
             
        } catch (FileNotFoundException e) {
            System.err.println("Le fichier n'existe pas !");
        }
    return connexion;
         
    }
}
